package com.example.demo.mapper;

import com.example.demo.entity.Department;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface DepartmentMapper {

    /**
     * 查询所有部门
     */
    List<Department> selectAll();

    /**
     * 根据ID查询部门
     */
    Department selectById(Integer id);

    /**
     * 插入部门
     */
    int insert(Department department);

    /**
     * 更新部门
     */
    int updateById(Department department);

    /**
     * 删除部门
     */
    int deleteById(Integer id);

    /**
     * 统计部门数量
     */
    long count();

    /**
     * 根据部门中文名查询部门
     */
    Department selectByDeptName(@Param("deptName") String deptName);

    /**
     * 根据部门英文名查询部门
     */
    Department selectByDeptEnName(@Param("deptEnName") String deptEnName);

    /**
     * 检查部门名称是否重复（排除指定ID）
     */
    Department selectByDeptNameExcludeId(@Param("deptName") String deptName, @Param("deptId") Integer deptId);

    /**
     * 检查部门英文名是否重复（排除指定ID）
     */
    Department selectByDeptEnNameExcludeId(@Param("deptEnName") String deptEnName, @Param("deptId") Integer deptId);
    
    /**
     * 按部门名称模糊搜索
     */
    List<Department> selectByNameLike(@Param("name") String name);
}